package upload;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @description:
 * @author: jhy
 * @time: 2021/4/17 17:14
 */

//传输文件的服务端
public class TCPFileUploadServer {

    public static void main(String[] args) throws IOException {

        //服务端在本机监听8888端口
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务端在8888端口监听");

        //服务端等待连接，如果一直没有被客户端连接，则阻塞
        //如果被客户端连接，则返回一个Socket对象
        Socket socket = serverSocket.accept();
        
        //读取客户端发送的数据
        //通过socket的输入流，读取传输通道中的数据
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        byte[] bytes = StreamUtils.streamToByteArray(bis);
        
        //将得到的bytes数据，写入到指定路径
        String destFilePath = "src\\三次握手.png";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFilePath));
        bos.write(bytes);
        bos.close();

        //服务端接收到消息后，给客户端回复一个消息
        //得到与socket相关的输出流
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("收到图片".getBytes());
        //设置输入结束标志
        socket.shutdownOutput();

        //关闭其他资源
        outputStream.close();
        bis.close();
        socket.close();
        serverSocket.close();

    }
}
